feat(s3-deployment): support \Fn::FindInMap in deploy-time values for
Source.jsonData
#34186
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #30369
Closes #30369
Reason for this change
In large APIs with custom response templates—such as structured code error mappings—it’s common to rely on CfnMapping to reduce template size and avoid CloudFormation’s 1MB limit. Repeating the same mapping multiple times causes CloudFormation to raise an error due to template size constraints.
By allowing Fn::FindInMap to be used in Source.jsonData, developers can define mappings once and reuse them across resources, optimizing template size and maintainability.
Description of changes
• Added support for Fn::FindInMap in deploy-time JSON data passed via
Source.jsonData(...).
• Extended the renderData() logic to recognize Fn::FindInMap as a valid
intrinsic.
• Added unit and integration tests to validate this support.
Describe any new or updated permissions being added
N/A – no new permissions are introduced in this change.
Description of how you validated changes
• Added unit tests covering:
• Valid use of Fn::FindInMap inside strings and as standalone values
• Marker resolution for mixed Fn::Join inputs
• Edge cases (e.g., invalid intrinsics, lazy resolution)
• Added an integration test that synthesizes a stack using Fn::FindInMap within Source.jsonData and confirms successful binding.
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license